﻿/*
SINACOR - BMF&Bovespa
Arquivo: FiltroConsultaAssessorValido.cs
Criado em: 31-mai-2010 09:44:16
Arquiteto Responsável: p-wgeneroso
*/
using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.Common.Validation;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Validation.BusinessRules;

namespace Sinacor.Servico.Bovespa.Movimento.BusinessLogic.BusinessRuleValidation 
{
	public class FiltroConsultaAssessorValido : BaseBusinessRuleValidation<BusinessEntity.Parameter.FiltroConsultaAssessor>, IBusinessRuleValidation 
	{
		#region Atributos

		private int _informeAoMenosUmParametro = 109733;
		private int _informeAssessorOuCorrespondente = 109734;

		#endregion

        #region Construtores

        /// <summary>
        /// Construtor Padrão
        /// </summary>
        public FiltroConsultaAssessorValido()
        {
        }

        #endregion

		#region Propriedades

		public int InformeAoMenosUmParametro
		{
			get { return _informeAoMenosUmParametro; }
			set { _informeAoMenosUmParametro = value; }
		}

		public int InformeAssessorOuCorrespondente
		{
			get { return _informeAssessorOuCorrespondente; }
			set { _informeAssessorOuCorrespondente = value; }
		}

		#endregion

		#region Métodos

		public List<ValidationError> GetErrors()
		{
            return base.ErrorsList;
		}

		public void Validate()
		{
            if (!EntityToValidate.CodigoAssessor.HasValue
                && !EntityToValidate.CodigoCorrespondente.HasValue)
            {
                base.AddValidationError(InformeAoMenosUmParametro);
            }
            else if (EntityToValidate.CodigoAssessor.HasValue
                     && EntityToValidate.CodigoCorrespondente.HasValue)
            {
                base.AddValidationError(InformeAssessorOuCorrespondente);
            }
		}

		#endregion
	}
}